Skip to content

[CODEC-340] Fix Base58 custom alphabet handling#437

Merged
garydgregory merged 2 commits into
apache:masterfrom
OldTruckDriver:fix/CODEC-340_base58_custom_alphabet
Jun 18, 2026
Merged

[CODEC-340] Fix Base58 custom alphabet handling#437
garydgregory merged 2 commits into
apache:masterfrom
OldTruckDriver:fix/CODEC-340_base58_custom_alphabet

Conversation

@OldTruckDriver

Copy link
Copy Markdown
Contributor

Summary

Fix Base58.Builder#setEncodeTable(byte...) so custom Base58 alphabets are used consistently for encoding, decoding, leading zero handling, and alphabet checks.

Details

Previously, the builder accepted a custom encode table, but Base58 still used the built-in static encode/decode tables internally. This meant custom alphabets were silently ignored.

This change derives a matching decode table from custom 58-byte alphabets, validates alphabet length and duplicate entries, and uses the configured alphabet throughout Base58 operations.

Tests

  • mvn -q -Dtest=org.apache.commons.codec.binary.Base58Test test
  • mvn -q '-Dtest=org.apache.commons.codec.binary.Base58*Test' test
  • mvn -q javadoc:javadoc
  • mvn -q

OldTruckDriver and others added 2 commits June 17, 2026 23:26
Derive a matching decode table from custom Base58 encode tables and use the configured tables when encoding, decoding, and checking the alphabet.

Handle leading zero bytes with the first entry of the configured alphabet instead of hard-coding '1'.

Reviewed-by: OpenAI Codex
Reviewed-by: Anthropic Claude Code
@garydgregory garydgregory merged commit 9898655 into apache:master Jun 18, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants